package sge.DAO;

import java.sql.PreparedStatement;
import java.sql.ResultSet;
import java.sql.SQLException;
import java.util.ArrayList;
import java.util.logging.Level;
import java.util.logging.Logger;
import sge.Datos.ModeloTabla;
import sge.Entidades.*;

public class MaterialDAO implements ObjetoDAO {

    private final static Logger LOG = Logger.getLogger(UsuarioDAO.class.getName());

    public MaterialDAO() {
    }

    public boolean crear(Material material) {
        String consulta = "INSERT INTO material(id_material, nombre, costo, descripcion) VALUES(NULL, '"
                + material.getNombre() + "', '"
                + material.getCosto() + "', '"
                + material.getDescripcion() + "');";


        boolean exito = CONEXION.ejecutarSQL(consulta) > 0;;
        if (exito) {
            material.setIdMaterial(CONEXION.obtenerUltimoIDGenerado());
        }
        return exito;
    }

    public boolean modificar(Material material) {
        String consulta = "UPDATE material SET "
                + "id_material='" + material.getIdMaterial()
                + "', nombre='" + material.getNombre()
                + "', costo='" + material.getCosto()
                + "', descripcion='" + material.getDescripcion() + "' WHERE "
                + "id_material='" + material.getIdMaterial() + "';";


        boolean exito = CONEXION.ejecutarSQL(consulta) > 0;;
        return exito;
    }

    public boolean eliminar(Integer idMaterial) {
        String consulta = "DELETE FROM material WHERE id_material='" + idMaterial + "';";

        boolean exito = CONEXION.ejecutarSQL(consulta) > 0;;
        return exito;
    }

    public boolean consultar(Material material) {

        String consulta = "SELECT * FROM material"
                + " WHERE id_material = '" + material.getIdMaterial() + "';";

        PreparedStatement ps =
                CONEXION.crearSentenciaPreparada(consulta);

        try {
            ResultSet rs = ps.executeQuery();

            if (rs.next()) {
                material.setIdMaterial(rs.getInt(1));
                material.setNombre(rs.getString(2));
                material.setCosto(rs.getDouble(3));
                material.setDescripcion(rs.getString(4));
                return true;
            }
        } catch (SQLException ex) {
            Logger.getLogger(UsuarioDAO.class.getName()).log(Level.SEVERE, null, ex);
        }
        return false;
    }//Fin consultar

    public ModeloTabla seleccionar() {
        String consulta = "SELECT * FROM material";
        ArrayList<String> cols = new ArrayList<>();

        cols.add("Id material");
        cols.add("Nombre");
        cols.add("Costo");
        cols.add("Descripcion");

        ModeloTabla modelo = new ModeloTabla(consulta, cols, false);

        return modelo;

    }
}